<?php

function postNull ($string) {
    if (is_null($string) || $string == "") {
        return "null";
    } else {
        return $string;
    }
}

function stornoRechnung ($rechnung) {
    $erfolgreich = true;

    $query = mysql_query('CREATE TEMPORARY TABLE tmp SELECT * from Rechnung WHERE ID=' . $rechnung);
    $query = mysql_query('ALTER TABLE tmp drop ID');
    $query = mysql_query('INSERT into Rechnung SELECT null,tmp.* FROM tmp');
    $rechnungsstorno = mysql_insert_id();
    $query = mysql_query('DROP TABLE tmp');

    $query = mysql_query('SELECT * from RechnungArtikel WHERE RechnungID=' . $rechnung);
    if (!$query) $erfolgreich = false;

    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $row = mysql_fetch_array($query);
        
        $query2 = mysql_query('INSERT into RechnungArtikel
            values (' . $rechnungsstorno . ',' . $row['ArtikelID'] . ',"' . $row['Artikelname'] . '", -' . $row['Preis'] . ',' . $row['Menge'] .')');
        if (!$query2) $erfolgreich = false;

        $query3 = mysql_query('UPDATE Artikel set Bestand=Bestand+' . $row['Menge'] . ' where ID=' . $row['ArtikelID']);
        if (!$query3) $erfolgreich = false;
    }

    $query = mysql_query('INSERT into RechnungStorno values (' . $rechnungsstorno . ', ' . $rechnung . ')');
    if (!$query) $erfolgreich = false;

    $_POST['detailsRechnung'] = $rechnungsstorno;
    postRechnungButtonLeiste ();

    if ($erfolgreich) {
        echo "<div class='info'>Rechnungsstorno erfolgreich erstellt!</div>";
        postRechnungDetails ($rechnungsstorno);
        // TODO: Fehlerbehandlung
    } else {
        echo "<div class='error'>Rechnungsstorno konnte nicht erstellt werden!</div>";
        postRechnungDetails ($rechnung);
    } 
}

function neuRechnungAusAngebot ($angebot) {
    $query = mysql_query("SELECT *, Angebot.ID as AngebotID, Angebot.Datum as Angebotdatum, Kunde.Vorname as KVorname, Kunde.Nachname as KNachname,
        Mitarbeiter.Vorname as MVorname, Mitarbeiter.Nachname as MNachname from Angebot
        left join Lieferung on Angebot.Lieferung=Lieferung.ID
        left join Kunde on Angebot.KundeID=Kunde.ID
        left join Mitarbeiter on Angebot.MitarbeiterID=Mitarbeiter.ID
        WHERE Angebot.ID=" . $angebot);

    $angebot = mysql_fetch_array($query);

    $query = mysql_query("SELECT * from AngebotArtikel
        left join Artikel on AngebotArtikel.ArtikelID = Artikel.ID
        where AngebotID=" . $angebot['AngebotID']);
    
    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $angebot['artikel'][$i] = mysql_fetch_array($query);
    }

    postRechnung($angebot);
}

function neuRechnungAusAuftrag ($auftrag) {
    $query = mysql_query("SELECT *, Auftrag.ID as AuftragID, Auftrag.Datum as Auftragdatum, Kunde.Vorname as KVorname, Kunde.Nachname as KNachname,
        Mitarbeiter.Vorname as MVorname, Mitarbeiter.Nachname as MNachname from Auftrag
        left join Lieferung on Auftrag.Lieferung=Lieferung.ID
        left join Kunde on Auftrag.KundeID=Kunde.ID
        left join Mitarbeiter on Auftrag.MitarbeiterID=Mitarbeiter.ID
        WHERE Auftrag.ID=" . $auftrag);

    $auftrag = mysql_fetch_array($query);

    $query = mysql_query("SELECT * from AuftragArtikel
        left join Artikel on AuftragArtikel.ArtikelID = Artikel.ID
        where AuftragID=" . $auftrag['AuftragID']);
    
    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $auftrag['artikel'][$i] = mysql_fetch_array($query);
    }

    postRechnung($auftrag);
}

function neuRechnungAusVorlage ($rechnungvorlage) {
    $query = mysql_query("SELECT *, Rechnung.ID as RechnungID, Rechnung.Datum as Rechnungdatum, Kunde.Vorname as KVorname, Kunde.Nachname as KNachname,
        Mitarbeiter.Vorname as MVorname, Mitarbeiter.Nachname as MNachname from Rechnung
        left join Lieferung on Rechnung.Lieferung=Lieferung.ID
        left join Kunde on Rechnung.KundeID=Kunde.ID
        left join Mitarbeiter on Rechnung.MitarbeiterID=Mitarbeiter.ID
        WHERE Rechnung.ID=" . $rechnungvorlage);
    $rechnung = mysql_fetch_array($query);

    $query = mysql_query("SELECT * from RechnungArtikel
        left join Artikel on RechnungArtikel.ArtikelID = Artikel.ID
        where RechnungID=" . $rechnung['RechnungID']);
    
    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $rechnung['artikel'][$i] = mysql_fetch_array($query);
    }

    // Reset Rechnung.ID, damit Vorlage nicht überschrieben wird
    $rechnung['RechnungID'] = null;

    postRechnung($rechnung);
}

function neuRechnung () {
    $erfolgreich = true;
    $lieferung = "null";

    if (isset($_POST['lieferung'])) {
        if (isset($_POST['montage'])) {
            $string = 'INSERT into Lieferung values (null, "' . $_POST['lieferdatum'] . '", 1, 0)';
        } else {
            $string = 'INSERT into Lieferung values (null, "' . $_POST['lieferdatum'] . '", 0, 0)';
        }

        $query = mysql_query($string);
        if (!$query) $erfolgreich = false;

        $lieferung = mysql_insert_id();
    }

    $string = 'INSERT into Rechnung values (null, "' . date("Y-m-d",time()) . '", "' . $_POST['informationen'] . '", ';

    if ($_POST['rabatt'] != "") {
        $string = $string . $_POST['rabatt'];
    } else {
        $string = $string . '0';
    }
    $string = $string . ', ' . postNull($_POST['comboboxKunde']) . ', ' . $_POST['comboboxMitarbeiter'] . ', ' . $lieferung .')';

    $query = mysql_query($string);
    if (!$query) $erfolgreich = false;
    
    $rechnungid = mysql_insert_id(); 

    for ($i=0; $i < count($_POST['artikelid']); $i++) {
        $query = mysql_query('SELECT Name from Artikel where ID=' . $_POST['artikelid'][$i]);
        $artikel = mysql_fetch_array($query);

        $string = 'INSERT into RechnungArtikel values (' . $rechnungid . ', ' . $_POST['artikelid'][$i] . ', "' . $artikel['Name'] . '", ' . $_POST['artikelpreis'][$i] . ', ' . $_POST['artikelmenge'][$i] . ')';
        
        $query = mysql_query($string);
        if (!$query) $erfolgreich = false;

        $query2 = mysql_query('UPDATE Artikel set Bestand=Bestand-' . $_POST['artikelmenge'][$i] . ' where ID=' . $_POST['artikelid'][$i]);
        if (!$query2) $erfolgreich = false;
    }

    if ($erfolgreich) {
        echo "<div class='info'>Rechnung erfolgreich angelegt!</div>";
        postRechnungListe ();
        // TODO: Fehlerbehandlung
    } else {
        echo "<div class='error'>Rechnung konnte nicht angelegt werden!</div>";
    }
}



function postRechnungListe () {
    $query = mysql_query("SELECT *, Rechnung.ID as RechnungID, Rechnung.Datum as Rechnungdatum, Kunde.Vorname as KVorname, Kunde.Nachname as KNachname,
        Mitarbeiter.Vorname as MVorname, Mitarbeiter.Nachname as MNachname, sum(Preis*Menge*((100-Rabatt)/100)) as Gesamtpreis from Rechnung
        left join Lieferung on Rechnung.Lieferung=Lieferung.ID
        left join Kunde on Rechnung.KundeID=Kunde.ID
        left join Mitarbeiter on Rechnung.MitarbeiterID=Mitarbeiter.ID
        left join RechnungArtikel on Rechnung.ID=RechnungArtikel.RechnungID
        left join RechnungStorno on Rechnung.ID=RechnungStorno.RechnungOriginalID
        left join RechnungVorlage on Rechnung.ID = RechnungVorlage.RechnungID
        where RechnungVorlage.RechnungID is null
        group by Rechnung.ID
        order by Rechnung.ID asc");
    
    postRechnungTabelle ($query);
}

function postRechnungButtonLeiste () {
    echo '<div class="buttonleiste">';

    if (isset($_POST['neuRechnung']) || isset($_POST['resetid']) || isset($_POST['neuRechnungAusAngebot']) || isset($_POST['neuRechnungAusAuftrag']) || isset($_POST['neuRechnungAusVorlage'])) {
        if (isset($_POST['neuRechnungAusAngebot']) && $_POST['neuRechnungAusAngebot'] !=0) {
            $angebot = $_POST['neuRechnungAusAngebot'];
        } elseif (isset($_POST['neuRechnungAusAuftrag']) && $_POST['neuRechnungAusAuftrag'] != 0) {
            $auftrag = $_POST['neuRechnungAusAuftrag'];
        } elseif (isset($_POST['neuRechnungAusVorlage']) && $_POST['neuRechnungAusVorlage'] != 0) {
            $rechnungvorlage = $_POST['neuRechnungAusVorlage'];
        } elseif (isset($_POST['resetid'])) {
            $id = $_POST['resetid'];
        }

        echo '<a href="index.php?section=rechnungen"><button class="submit left r10" name="rechnung" type="submit">Zur Rechnungs&uuml;bersicht</button></a>';
        echo '<form action="index.php?section=rechnungen" method="post">
                <input type="hidden" name="neuRechnungAusAngebot" value="' . $angebot . '">
                <input type="hidden" name="neuRechnungAusAuftrag" value="' . $auftrag . '">
                <input type="hidden" name="neuRechnungAusVorlage" value="' . $rechnungvorlage . '">
                <input type="hidden" name="resetid" value="' . $id . '"> 
                <button class="submit left r10">Reset</button>
            </form>';
        echo '<button class="submit left buttonIEdisable" name="speichernRechnung" type="submit" form="rechnungform">Speichern</button>';
   
    } elseif (isset($_POST['detailsRechnung'])) {
        $id = $_POST['detailsRechnung'];

        echo '<a href="index.php?section=rechnungen"><button class="submit left r10" name="alleRechnungen" type="submit">Alle Rechnungen anzeigen</button></a>';

        if (mysql_num_rows(mysql_query('SELECT * from RechnungStorno where RechnungOriginalID=' . $id)) == 1) {
        
            if (mysql_num_rows(mysql_query('SELECT * from Rechnung where Lieferung is not null and ID=' . $id)) == 1) {
                echo '<form action="pdf_lieferschein.php" method="post">
                    <input type="hidden" name="erstellePDF" value="' . $id . '"> 
                    <button class="submit left r10" formtarget="_blank">Lieferschein erstellen</button>
                </form>';
            }

        } elseif (mysql_num_rows(mysql_query('SELECT * from RechnungStorno where RechnungStornoID=' . $id)) == 0) {

            echo '<form action="index.php?section=rechnungen" method="post">
                <input type="hidden" name="stornoRechnung" value="' . $id . '"> 
                <button class="submit left r10">Storno erstellen</button>
            </form>';

            if (mysql_num_rows(mysql_query('SELECT * from Rechnung where Lieferung is not null and ID=' . $id)) == 1) {
                echo '<form action="pdf_lieferschein.php" method="post">
                    <input type="hidden" name="erstellePDF" value="' . $id . '"> 
                    <button class="submit left r10" formtarget="_blank">Lieferschein erstellen</button>
                </form>';
            }
        }

        echo '<form action="pdf_rechnung.php" method="post">
                    <input type="hidden" name="erstellePDF" value="' . $id . '"> 
                    <button class="submit left r10" formtarget="_blank">PDF erstellen</button>
                </form>';

    } else {
        if (isset($_POST['sucheRechnungen'])) {
            echo '<a href="index.php?section=rechnungen"><button class="submit left r10" name="alleRechnungen" type="submit">Alle Rechnungen anzeigen</button></a>';
        } 

        echo '<form method="post" action="index.php?section=rechnungen" class="left r10">
            <button class="submit" name="neuRechnung" type="submit">Rechnung hinzuf&uuml;gen</button>
        </form>';

        echo '<a href="index.php?section=menu"><button class="submit left r10" name="menu" type="submit">Zum Men&uuml;</button></a>';

        echo '<form method="post" action="index.php?section=rechnungen" id="searchRechnung" class="right">
            <input class="suche" name="suche" placeholder="Suche" pattern=".+" type="search" />
            <button class="submit" name="sucheRechnungen" type="submit">Suche</button>
        </form>';
    }
    echo '</div>';
}

function postRechnungTabelle ($query) {
    echo '<table class="liste clear">
        <tr>
            <th>#</th>
            <th>Datum</th>
            <th class="textright">Gesamtpreis</th>
            <th>Kunde</th>
            <th>Mitarbeiter</th>
            <th>Geliefert</th>
            <th>Storniert</th>
        </tr>';
    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $rechnung = mysql_fetch_array($query);
        if ($i % 2 == 0) {
            echo '<tr>';
        } else {
            echo '<tr class="farbigeZeile">';
        }

        echo '<td>
                    <form action="index.php?section=rechnungen" method="post">
                        <input type="hidden" name="detailsRechnung" value="' . $rechnung['RechnungID'] . '"> 
                        <button class="linkbutton">' . $rechnung['RechnungID'] . '</button>
                    </form>
                </td>
                <td>'. $rechnung['Datum'] . '</td>
                <td class="textright">'. number_format($rechnung['Gesamtpreis'], 2, ',', '.') . ' €</td>
                <td>'. $rechnung['KVorname'] . ' ' . $rechnung['KNachname'] . '</td>
                <td>'. $rechnung['MVorname'] . ' ' . $rechnung['MNachname'] . '</td>
                <td>';

        if ($rechnung['Status']) {
            echo 'Ja';
        } elseif (is_null($rechnung['Status'])) {
            echo '&nbsp;';
        } else {
            echo '<form action="index.php?section=rechnungen" method="post">
                <input type="hidden" name="geliefertRechnung" value="' . $rechnung['RechnungID'] . '"> 
                <button class="linkbutton">Nein</button>
            </form>';
        }

        echo '</td>
            <td>';

        if ($rechnung['RechnungID'] == $rechnung['RechnungOriginalID']) {
            echo '#' . $rechnung['RechnungStornoID'];
        } else {
            echo '&nbsp;';
        }
        

        echo '</td>
            </tr>';
    }
    echo '</table>';
}

function postRechnungBearbeiten ($rechnung) {
    $query = mysql_query("SELECT *, Rechnung.ID as RechnungID, Rechnung.Datum as Rechnungdatum, Kunde.Vorname as KVorname, Kunde.Nachname as KNachname,
        Mitarbeiter.Vorname as MVorname, Mitarbeiter.Nachname as MNachname from Rechnung
        left join Lieferung on Rechnung.Lieferung=Lieferung.ID
        left join Kunde on Rechnung.KundeID=Kunde.ID
        left join Mitarbeiter on Rechnung.MitarbeiterID=Mitarbeiter.ID
        WHERE Rechnung.ID=" . $rechnung);
    $rechnung = mysql_fetch_array($query);

    $query = mysql_query("SELECT * from RechnungArtikel
        left join Artikel on RechnungArtikel.ArtikelID = Artikel.ID
        where RechnungID=" . $rechnung['RechnungID']);
    
    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $rechnung['artikel'][$i] = mysql_fetch_array($query);
    }

    postRechnung($rechnung);
}

function postRechnung ($row) {
    echo '
        <form class="formular" action="index.php?section=rechnungen" method="post" id="rechnungform" name="rechnungform" onsubmit="return minArtikel()" onkeyup="checkLieferung(this);" onmousemove="checkLieferung(this);">
        <ul>
            <li>
                 <h2>Rechnung ';

    if (isset($row['RechnungID'])) {
        echo '#' . $row['RechnungID'] . ' &auml;ndern';
    } else {
        echo 'hinzuf&uuml;gen';
    }
                
    echo '</h2>
                 <span class="required_notification">* Ben&ouml;tigte Felder</span>
            </li>
            <li>
                <label for="informationen">Informationen:</label>
                <textarea id="informationen" name="informationen" placeholder="Rechnungsinformationen eintragen" maxlength="300">' . $row['Informationen'] . '</textarea>
            </li>
            <li>
                <label for="comboboxKunde_input">Kunde:</label>';
    include ('inc/comboboxKunde.php');
    echo'</li>
        <li>
                <label for="comboboxMitarbeiter_input">Mitarbeiter</label>';
    include ('inc/comboboxMitarbeiter.php');    
    echo'</li>
        <li>
                <label for="comboboxArtikel_input">Artikel</label>';
    include ('inc/comboboxArtikel.php');   
    echo '</li>
            <li>
                <label for="rabatt">Rabatt:</label>
                <input id="rabatt" name="rabatt" pattern="^[0-9]{0,2}$" value="' . $row['Rabatt'] . '" type="text" placeholder="Rabatt" maxlength="2" />
                <span class="form_hint">in Prozent</span>               
            </li>';
    if ($row['Lieferung']) {
        echo '<li>
                    <label for="lieferung">Lieferung:</label>
                    <input id="lieferung" type="checkbox" name="lieferung" checked="checked" value="' . $row['Lieferung'] . '">
                </li>
                <li>
                    <label for="lieferdatum">Lieferdatum:</label>
                    <input id="lieferdatum" type="date" name="lieferdatum" placeholder="YYYY-MM-DD" value="' . $row['Lieferdatum'] . '">
                </li>
                <li>
                    <label for="montage">Montage:</label>';
        
        if ($row['Montage'] == 1) {
            echo '<input id="montage" type="checkbox" name="montage" checked="checked" value="1">';
        } else {
            echo '<input id="montage" type="checkbox" name="montage" value="1">';
        }
        
        echo '</li>
            <li>
                <button class="submit buttonIEenable" name="speichernRechnung" type="submit">Speichern</button>
            </li>';
    } else {
        echo '<li>
                    <label for="lieferung">Lieferung:</label>
                    <input id="lieferung" type="checkbox" name="lieferung" value="1" disabled>
                </li>
                <li>
                    <label for="lieferdatum">Lieferdatum:</label>
                    <input id="lieferdatum" type="date" name="lieferdatum" placeholder="YYYY-MM-DD" value="' . date("Y-m-d",time()) . '" disabled>
                </li>
                <li>
                    <label for="montage">Montage:</label>
                    <input id="montage" type="checkbox" name="montage" value="1" disabled>
                </li>
                <li>
                    <input type="hidden" name="id" value="' . $row['RechnungID'] . '"> 
                    <button class="submit buttonIEenable" name="speichernRechnung" type="submit">Speichern</button>
                </li>';
    }
    
    echo '</ul>
    </form>
    ';
}

function postRechnungDetails ($rechnung) {
    $query = mysql_query("SELECT *, Rechnung.ID as RechnungID, Rechnung.Datum as Rechnungdatum, Kunde.Vorname as KVorname, Kunde.Nachname as KNachname,
        Mitarbeiter.Vorname as MVorname, Mitarbeiter.Nachname as MNachname, sum(Preis*Menge*((100-Rabatt)/100)) as Gesamtpreis, sum(Preis*Menge) as 'Gesamtpreis ohne Rabatt'  from Rechnung
        left join Lieferung on Rechnung.Lieferung=Lieferung.ID
        left join Kunde on Rechnung.KundeID=Kunde.ID
        left join Mitarbeiter on Rechnung.MitarbeiterID=Mitarbeiter.ID
        left join RechnungArtikel on Rechnung.ID=RechnungArtikel.RechnungID
        left join RechnungStorno on Rechnung.ID=RechnungStorno.RechnungStornoID
        WHERE Rechnung.ID=" . $rechnung);
    $rechnung = mysql_fetch_array($query);

    echo '
    <table class="detailliste_breit">
        <tr>
            <td colspan="2"><h2>';

    if (isset($rechnung['RechnungStornoID'])) {
        echo 'Rechnungsstorno #' . $rechnung['RechnungStornoID'] . ' von Rechnung #' . $rechnung['RechnungOriginalID'];
    } else {
        echo 'Rechnung #'. $rechnung['RechnungID'];
    }
    
    echo '</h2></td>
        </tr>
        <tr>
            <td class="beschriftung">Datum:</td>
            <td>' . $rechnung['Datum'] . '</td>
        </tr>
        <tr>
            <td class="beschriftung">Informationen:</td>
            <td>' . $rechnung['Informationen'] . '</td>
        </tr>
        <tr>
            <td class="beschriftung">Kunde:</td>
            <td>' . $rechnung['KVorname'] . ' ' . $rechnung['KNachname'];

    if ($rechnung['Firma'] != "") {
        echo ' der Firma ' . $rechnung['Firma'];
    }

    echo '</td>
        </tr>
        <tr>
            <td class="beschriftung">Mitarbeiter:</td>
            <td>' . $rechnung['MVorname'] . ' ' . $rechnung['MNachname'] . '</td>
        </tr>';

    if ($rechnung['Rabatt'] != "" && $rechnung['Rabatt'] != 0) {
        echo '<tr>
            <td class="beschriftung">Gesamtpreis ohne Rabatt:</td>
            <td>' . number_format($rechnung['Gesamtpreis ohne Rabatt'], 2, ',', '.') . ' EUR</td>
        </tr>
        <tr>
            <td class="beschriftung">Rabatt:</td>
            <td>' . $rechnung['Rabatt'] . '%</td>
        </tr>
        <tr>
            <td class="beschriftung">Gesamtpreis mit Rabatt:</td>
            <td>' . number_format($rechnung['Gesamtpreis'], 2, ',', '.') . ' EUR</td>
        </tr>';
    } else {
        echo '<tr>
            <td class="beschriftung">Gesamtpreis:</td>
            <td>' . number_format($rechnung['Gesamtpreis ohne Rabatt'], 2, ',', '.') . ' EUR</td>
        </tr>';
    }

    echo '<tr>
            <td class="beschriftung vat">Artikel:</td>
            <td>
                <ul>';

    $query = mysql_query("SELECT * from RechnungArtikel where RechnungID=" . $rechnung['RechnungID']);
    
    for ($i=0; $i < mysql_num_rows ($query); $i++) { 
        $artikel = mysql_fetch_array($query);

        echo '<li>' . $artikel['Menge'] . 'x ' . $artikel['Artikelname'] . ' je ' . number_format($artikel['Preis'], 2, ',', '.') . ' EUR</li>';
    }

    echo '</ul>
            </td>
        </tr>
        <tr>
            <td class="beschriftung">Lieferung:</td>';
        
    if ($rechnung['Lieferung']) {
        echo '<td>Ja</td>
        </tr>
        <tr>
            <td class="beschriftung">Lieferdatum:</td>
            <td>' . $rechnung['Lieferdatum'] . '</td>
        </tr>
        <tr>
            <td class="beschriftung">Montage:</td>
            <td>';
        
        if ($rechnung['Montage'] == 1) {
            echo 'Ja';
        } else {
            echo 'Nein';
        }
        echo '</td>
        <tr>
            <td class="beschriftung">Geliefert:</td>
            <td>';
        
        if ($rechnung['Status'] == 1) {
            echo 'Ja';
        } else {
            echo 'Nein';
        }
        echo '</td>
            </tr>';

    } else {
        echo '<td>Nein</td>
        </tr>';
    }

    echo '</table>';
}

?>